using System;
using System.Data;
using System.Data.SqlClient;
using System.Collections;
using Common;	
using SystemFrameworks;
using Microsoft.ApplicationBlocks.Data;	    
namespace MinCultura.Sipa.AgentesArtes
{
	/// <summary>
	/// Clase de acceso a datos para la entidad ART_SITUACION_LABORAL
	/// </summary>
	public class SituacionLaboral
	{
		#region Private Data Access Atributes
		private const String SLA_ID_PARAM = "@SLA_ID";
		private const String SLA_SITUACION_PARAM = "@SLA_SITUACION";
		#endregion Private Data Access Atributes

        #region propiedades

        private string _cadenaConexion;

        public string ConnectionString
        {
            get { return _cadenaConexion; }
            set { _cadenaConexion = value; }
        }

        #endregion

		/// <summary>
		/// Constructor de la clase ARTSITUACIONLABORAL
		/// </summary>
        public SituacionLaboral(string strCadenaConecxion)
        {
            ConnectionString = strCadenaConecxion;
        }

		public MinCultura.Sipa.DataAccess.AgentesArtes.SituacionLaboralData BuscarSituacionLaboral()
		{
		MinCultura.Sipa.DataAccess.AgentesArtes.SituacionLaboralData response = new MinCultura.Sipa.DataAccess.AgentesArtes.SituacionLaboralData();
		SqlHelper.ExecuteDataTable(this.ConnectionString, CommandType.StoredProcedure, "PAS_BUSCAR_ART_SITUACION_LABORAL", response.Tables[0]);
			if (response.Tables[0].Rows.Count == 0)
				return null;
			return response;
		}
		
		
		public MinCultura.Sipa.DataAccess.AgentesArtes.SituacionLaboralData ConsultarSituacionLaboral	(decimal parSLA_ID)
		{
		MinCultura.Sipa.DataAccess.AgentesArtes.SituacionLaboralData response = new MinCultura.Sipa.DataAccess.AgentesArtes.SituacionLaboralData();
		
			SqlParameter param1 = new SqlParameter(SLA_ID_PARAM, parSLA_ID);
			
			SqlParameter[] parameters = {param1};		
			SqlHelper.ExecuteDataTable(this.ConnectionString, CommandType.StoredProcedure, "PAS_CONSULTAR_ART_SITUACION_LABORAL", response.Tables[0], parameters);
			if (response.Tables[0].Rows.Count == 0)
				return null;
			return response;
		}
				
		public decimal  AdicionarSituacionLaboral (MinCultura.Sipa.DataAccess.AgentesArtes.SituacionLaboralData datos)
		{
			DataTable tabla = datos.Tables[MinCultura.Sipa.DataAccess.AgentesArtes.SituacionLaboralData.ART_SITUACION_LABORAL_TABLE];
			decimal decSLA_ID=0;
					
			try
			{
                //StartTransaction();

				foreach (DataRow row in tabla.Rows)
				{					
					SqlParameter param1 = new SqlParameter(SLA_ID_PARAM, SqlDbType.Decimal);
					param1.Direction=ParameterDirection.Output;
					SqlParameter param2 = new SqlParameter(SLA_SITUACION_PARAM, row[MinCultura.Sipa.DataAccess.AgentesArtes.SituacionLaboralData.SLA_SITUACION_FIELD]);					
					SqlParameter[] parameters = {param1,param2};

					SqlHelper.ExecuteNonQuery(this.ConnectionString, CommandType.StoredProcedure, "PAS_ADICIONAR_ART_SITUACION_LABORAL", parameters);

					decSLA_ID=decimal.Parse(param1.Value.ToString());					
				} 
				
                //if (this.RegistroAuditoria!=null)
                //{
                //    this.RegistroAuditoria.Rows[0][RegistroAuditoriaData.REG_IDENTIFICADOR_FIELD] = decSLA_ID;
                //}

                //RegistrarAuditoria();

                //CompleteTransaction();

				return(decSLA_ID);				 
			} 		
			catch (SqlException sqlEx)
			{	
                //AbortTransaction();
				throw new ApplicationExceptionManager(Utilidad.DisplaySqlErrors(sqlEx,"ART_SITUACION_LABORAL"),sqlEx); 
			}     
			catch (Exception ex) 
			{ 
                //AbortTransaction();
				throw new ApplicationExceptionManager(Utilidad.TraerMensaje("gmsgErrorInsertar", "ART_SITUACION_LABORAL"),ex); 
			}	
		}		
		
		public void ActualizarSituacionLaboral (MinCultura.Sipa.DataAccess.AgentesArtes.SituacionLaboralData datos)
		{
			DataTable tabla = datos.Tables[MinCultura.Sipa.DataAccess.AgentesArtes.SituacionLaboralData.ART_SITUACION_LABORAL_TABLE];
			MinCultura.Sipa.DataAccess.AgentesArtes.SituacionLaboralData situacionLaboralDataAnt = new MinCultura.Sipa.DataAccess.AgentesArtes.SituacionLaboralData();
			try
			{
                //if (this.RegistroAuditoria!=null)
                //{
                //    situacionLaboralDataAnt = ConsultarSituacionLaboral(Convert.ToDecimal(tabla.Rows[0][MinCultura.Sipa.DataAccess.AgentesArtes.SituacionLaboralData.SLA_ID_FIELD]));
                //}

                //StartTransaction();

				foreach (DataRow row in tabla.Rows)
				{				
				SqlParameter param1 = new SqlParameter(SLA_ID_PARAM, row[MinCultura.Sipa.DataAccess.AgentesArtes.SituacionLaboralData.SLA_ID_FIELD]);
				SqlParameter param2 = new SqlParameter(SLA_SITUACION_PARAM, row[MinCultura.Sipa.DataAccess.AgentesArtes.SituacionLaboralData.SLA_SITUACION_FIELD]);
					
				SqlParameter[] parameters = {param1,param2};
				SqlHelper.ExecuteNonQuery(this.ConnectionString, CommandType.StoredProcedure, "PAS_ACTUALIZAR_ART_SITUACION_LABORAL", parameters); 
				}
 
				//RegistrarAuditoria(situacionLaboralDataAnt.Tables[0],tabla);

				//CompleteTransaction();
			} 
			catch (SqlException sqlEx)
			{
				//AbortTransaction();
				throw new ApplicationExceptionManager(Utilidad.DisplaySqlErrors(sqlEx,"ART_SITUACION_LABORAL"),sqlEx); 
			}     
			catch (Exception ex) 
			{ 
				//AbortTransaction();
				throw new ApplicationExceptionManager(Utilidad.TraerMensaje("gmsgErrorActualizar", "ART_SITUACION_LABORAL"),ex); 
			}
		} 
		
			/// <summary>
			/// Elimina un registro de la entidad Artsituacionlaboral
			/// </summary>
			/// <param name="parSLA_ID">Identificador del registro
			public void EliminarSituacionLaboral (decimal parSLA_ID)
			{
				try
				{
					SqlParameter param1 = new SqlParameter(SLA_ID_PARAM, parSLA_ID);
						
					SqlParameter[] parameters = {param1};
					SqlHelper.ExecuteNonQuery(this.ConnectionString, CommandType.StoredProcedure, "PAS_ELIMINAR_ART_SITUACION_LABORAL", parameters); 
				}
				catch (SqlException sqlEx)
				{		
					throw new ApplicationExceptionManager(Utilidad.DisplaySqlErrors(sqlEx,"ART_SITUACION_LABORAL"),sqlEx); 
				}     
				catch (Exception ex) 
				{ 
					throw new ApplicationExceptionManager(Utilidad.TraerMensaje("gmsgErrorEliminar", "ART_SITUACION_LABORAL"),ex); 
				}
			}
			
		public void EliminarSituacionLaboral(ArrayList arrIDs)
		{
			try
			{
				//StartTransaction();

				foreach(object Item in arrIDs)
				{		
					SqlParameter param1 = new SqlParameter(SLA_ID_PARAM, decimal.Parse(Item.ToString()));
					SqlParameter[] parameters = {param1};
					SqlHelper.ExecuteNonQuery(this.ConnectionString, CommandType.StoredProcedure, "PAS_ELIMINAR_ART_SITUACION_LABORAL", parameters); 
				}

				//RegistrarAuditoria();

				//CompleteTransaction();
			}
			catch (SqlException sqlEx)
			{
				//AbortTransaction();
				throw new ApplicationExceptionManager(Utilidad.DisplaySqlErrors(sqlEx,"ART_SITUACION_LABORAL"),sqlEx); 
			}
			catch (Exception ex)
			{
				//AbortTransaction();
				throw new ApplicationExceptionManager (Utilidad.TraerMensaje("gmsgErrorEliminar", "ART_SITUACION_LABORAL"),ex); 
			}				  					 
		}		
	}	
}		

